package T2_10;

public class T7 {
    public int trap(int[] height) {

        //第i个位置接到的水的数量：较小高度的板子-当前元素的高度
        //定义左右两个指针，记录两侧最大高度的板子长度
        int head=0;
        int rear=height.length-1;
        int maxL=height[0];
        int maxR=height[rear];
        int res=0;
        while (head<=rear){
            if (maxL<maxR){
                //如果左边的最大高度小于右边，说明决定积水容量的因素在左边，
                //先更新左指针
                maxL=Math.max(maxL,height[head]);
                // 计算当前位置可积水容量，移动左指针
                 res+=maxL-height[head++];
            }else {
                maxR=Math.max(maxR,height[rear]);
                res+=maxR-height[rear--];
            }
        }
        return res;
    }
}
